/**
  ******************************************************************************
  * @author     Chris
  * @since      2023/9/29 22:38
  *
  * @file       hd_buzzer.c
  * @brief      Buzzer Hardware Driver.
  *
  * @note       This file contains the hardware driver for the Buzzer.
  *
  * @warning    None.
  ******************************************************************************
  * Change Logs:
  *   Date           Author       Notes
  *   2023-09-29     Chris        the first version
  *
  ******************************************************************************
  */

#include "stm32g4xx_ll_bus.h"
#include "stm32g4xx_ll_gpio.h"
#include "delay.h"
#include "pd_h_gpio.h"


/** region Declaration and Definition Region */


/** region Variables and Constants Region */

/** endregion Variables and Constants Region */


/** region Function Declaration Region */

/** endregion Function Declaration Region */


/** endregion Declaration and Definition Region */



/** region Public Definition Region */
/**
 * @brief   有源蜂鸣器（Active Buzzer）初始化
 *          只需要使用一个 IO 口，设置为上拉输出模式即可。
 * @note    有源蜂鸣器内部含有自带振荡源，正负极接直流电源即可发声，但频率固定。
 *          需要注意有源蜂鸣器导通时 IO 口的输出电平。
 * @param   无
 * @retval  无
 */
void HD_BUZZER_ActiveInit(void) {
    PD_H_GPIO_BuzzerActiveInit();
}

/**
 * @brief   有源蜂鸣器（Active Buzzer）发声
 * @note    有源蜂鸣器内部含有自带振荡源，正负极接直流电源即可发声，但频率固定。
 *          需要注意有源蜂鸣器导通时 IO 口的输出电平（这里为低电平发声）。
 * @param   无
 * @retval  无
 */
void HD_BUZZER_ActiveOn(void) {
    PD_H_GPIO_WriteBit(GPIOA, LL_GPIO_PIN_6, SET);
    delay_ms(100);
    PD_H_GPIO_WriteBit(GPIOA, LL_GPIO_PIN_6, RESET);
    delay_ms(100);
    PD_H_GPIO_WriteBit(GPIOA, LL_GPIO_PIN_6, SET);
    delay_ms(100);
    PD_H_GPIO_WriteBit(GPIOA, LL_GPIO_PIN_6, RESET);
    delay_ms(700);
}

/**
 * @brief   无源蜂鸣器（Passive Buzzer）初始化
 * @note    无源蜂鸣器内部不带振荡源，需要提供振荡脉冲才可发声。一般可以通过 PWM 来
 *          使无源蜂鸣器发声。不同的频率可发出不同的音调。
 * @param   无
 * @retval  无
 */
void HD_BUZZER_PassiveInit(void) {

}

/**
 * @brief   无源蜂鸣器（Passive Buzzer）发声
 * @note    无源蜂鸣器内部不带振荡源，需要提供振荡脉冲才可发声。一般可以通过 PWM 来
 *          使无源蜂鸣器发声。不同的频率可发出不同的音调。
 * @param   无
 * @retval  无
 */
void HD_BUZZER_PassiveOn(void) {

}

/** endregion Public Definition Region */



/** region Private Definition Region */

/** endregion  Private Definition Region  */
